package edu.scsw.tech.unit2;

import java.util.Scanner;

// 输入一行字符，分别统计出其中英文字母、空格、数字和其他字符的个数
public class CharacterCounter {

    public static void main(String[] args) {
        // 创建Scanner对象，用于读取用户输入
        Scanner sc = new Scanner(System.in);

        // 提示用户输入一行字符
        System.out.print("请输入一行字符: ");
        String input = sc.nextLine();

        // 调用统计方法并获取结果
        int[] counts = countCharacters(input);

        // 打印统计结果
        System.out.println("英文字母个数: " + counts[0]);
        System.out.println("空格个数: " + counts[1]);
        System.out.println("数字个数: " + counts[2]);
        System.out.println("其他字符个数: " + counts[3]);

        // 关闭Scanner对象，释放资源
        sc.close();
    }

    /**
     * 统计字符串中的英文字母、空格、数字和其他字符的个数
     * @param str 要统计的字符串
     * @return 一个长度为4的数组，分别存储英文字母、空格、数字和其他字符的个数
     */
    public static int[] countCharacters(String str) {
        int letters = 0; // 英文字母计数
        int spaces = 0; // 空格计数
        int digits = 0; // 数字计数
        int others = 0; // 其他字符计数

        // 遍历字符串中的每个字符
        for (char ch : str.toCharArray()) {
            if (Character.isAlphabetic(ch) && ch < 128) {
                letters++; // 如果是英文字母（ASCII 范围内），计数加1
            } else if (Character.isSpaceChar(ch)) {
                spaces++; // 如果是空格，计数加1
            } else if (Character.isDigit(ch)) {
                digits++; // 如果是数字，计数加1
            } else {
                others++; // 如果是其他字符，计数加1
            }
        }

        // 返回统计结果
        return new int[]{letters, spaces, digits, others};
    }
}
